Greater ================= 逐元素比较两个输入张量,判断 `input1` 的元素是否大于 `input2` 的对应元素。支持广播。 .. math:: \text{output}_i = (\text{input1}_i > \text{input2}_i) 输出一个布尔张量,如果比较结果为真,则对应元素为 `true`,否则为 `false`。 输入: - **element_num** - 输出张量的总元素数量。在广播情况下,等于较大输入张量的元素数量。 - **optimize** - 广播优化标志。若为非0,则启用广播模式。 - **in_elements_num0** - 第一个输入张量 `input1` 的元素数量。用于广播判断。 - **input1** - 第一个输入张量的数据地址。 - **input2** - 第二个输入张量的数据地址。 - **output** - (输出) 输出的布尔类型张量的数据地址。 - **core_mask** - 核掩码。 输出: - **output** - 写入比较结果的布尔张量。 支持平台: ``FT78NE`` ``MT7004`` .. note:: - FT78NE 支持fp32, fp64, int8, int16, int32 - MT7004 支持fp16, fp32, int16, int32 **共享存储版本:** .. c:function:: void fp_greater_s(int element_num, int optimize, int in_elements_num0, float *input1, float *input2, bool *output, int core_mask) .. c:function:: void hp_greater_s(int element_num, int optimize, int in_elements_num0, half *input1, half *input2, bool *output, int core_mask) .. c:function:: void dp_greater_s(int element_num, int optimize, int in_elements_num0, double *input1, double *input2, bool *output, int core_mask) .. c:function:: void i32_greater_s(int element_num, int optimize, int in_elements_num0, int32_t *input1, int32_t *input2, bool *output, int core_mask) .. c:function:: void i16_greater_s(int element_num, int optimize, int in_elements_num0, int16_t *input1, int16_t *input2, bool *output, int core_mask) .. c:function:: void i8_greater_s(int element_num, int optimize, int in_elements_num0, int8_t *input1, int8_t *input2, bool *output, int core_mask) **C调用示例:** .. code-block:: c :linenos: :emphasize-lines: 15 //FT78NE示例 #include #include int main(int argc, char* argv[]) { float *input1 = (float *)0xA0000000; // Scalar input, DDR float *input2 = (float *)0xB0000000; // Tensor input bool *output = (bool *)0xC0000000; // Output // Broadcasting input1 (scalar) > input2 (tensor) int element_num = 4096; // Size of input2 and output int optimize = 1; // Enable broadcasting int in_elements_num0 = 1; // Size of input1 int core_mask = 0xff; fp_greater_s(element_num, optimize, in_elements_num0, input1, input2, output, core_mask); return 0; } **私有存储版本:** .. c:function:: void fp_greater_p(int element_num, int optimize, int in_elements_num0, float *input1, float *input2, bool *output) .. c:function:: void hp_greater_p(int element_num, int optimize, int in_elements_num0, half *input1, half *input2, bool *output) .. c:function:: void i32_greater_p(int element_num, int optimize, int in_elements_num0, int32_t *input1, int32_t *input2, bool *output) .. c:function:: void i16_greater_p(int element_num, int optimize, int in_elements_num0, int16_t *input1, int16_t *input2, bool *output) .. c:function:: void i8_greater_p(int element_num, int optimize, int in_elements_num0, int8_t *input1, int8_t *input2, bool *output) **C调用示例:** .. code-block:: c :linenos: :emphasize-lines: 14 //FT78NE示例 #include #include int main(int argc, char* argv[]) { float *input1 = (float *)0x10000000; // Tensor input, L2 float *input2 = (float *)0x11000000; // Scalar input bool *output = (bool *)0x12000000; // Output // Broadcasting input1 (tensor) > input2 (scalar) int element_num = 1024; // Size of input1 and output int optimize = 1; // Enable broadcasting int in_elements_num0 = 1024; // Size of input1 fp_greater_p(element_num, optimize, in_elements_num0, input1, input2, output); return 0; }